feat: validate model params at runtime#64
Merged
Conversation
ParamsOf<Id> only types params known at compile time; an HTTP body is `any`. parseParams(id, input) validates an untrusted params object against the catalog (unknown keys, numeric ranges, enum values), and paramsSchema(id) exposes the same as a Standard Schema for tRPC/Hono/etc. Also exports a loose `Param` type that getModel(id).params assigns to without a cast.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
💭 Why
ParamsOf<Id>only types params known at compile time. An HTTP request body isany, so server-side callers had to hand-roll the range and enum checks the catalog already encodes.✨ What changed
parseParams(id, input)validates an untrusted params object: unknown keys, numeric ranges, enum values.paramsSchema(id)returns a Standard Schema, so it drops into tRPC, Hono, and similar.Paramtype;getModel(id).paramsassigns toreadonly Param[]with no cast.👤 For users
Validate request params against a model's catalog in one call instead of a bespoke validator.
🔧 For operators
Code-only change, so it won't auto-publish (the release pipeline triggers on catalog edits). Run the "Release modelparams" workflow with
force_level=patchto ship it.